From simple script to DEB package
Table of Content
From simple script to DEB package#
Create debian package for simple python script
using stdeb
control dependencies and add shortcut to launch the script
Project#
project structure
python_deb_tutorial
├── python_deb_tutorial
│ ├── hello.py
│ └── __init__.py
├── README.md
└── setup.py
setup.py
from setuptools import setup, find_packages
setup(
name='my_script',
version='0.0.1',
description='very simple script',
packages=find_packages(),
entry_points={
'console_scripts': [
'hello = python_deb_tutorial.hello:main',
],
}
)
hello.py
#! /usr/bin/python3
def main():
print("hello deb")
create package#
python setup.py --command-packages=stdeb.command bdist_deb
install. run. remove deb#
install
# from project folder
sudo dpkg -i deb_dist/python3-my-script_0.0.1-1_all.deb
run
# script installed in `/usr/bin` folder
# just call the entry name from the setup.py
#
hello
remove
sudo dpkg -r python3-my-script
Add shortcut and icon#
- Add my-script.png
- Add my-script.desktop
project structure
python_deb_tutorial
├── python_deb_tutorial
│ ├── hello.py
│ └── __init__.py
├── README.md
├── my-script.desktop
├── my-script.png
└── setup.py
my-script.desktop
[Desktop Entry]
Name=My hello app
Exec=/usr/bin/hello
Icon=/usr/share/icons/my-script.png
Terminal=true
Type=Application
setup.py
from setuptools import setup, find_packages
setup(
name='my_script',
version='0.0.1',
description='very simple script',
packages=find_packages(),
entry_points={
'console_scripts': [
'hello = python_deb_tutorial.hello:main',
],
},
data_files = [
('share/applications/', ['my-script.desktop']),
('share/icons/', ['my-script.png'])
]
)
try#

Add package dependencies#
python packages#
- Add
install_requiresto setup.py
install_requires=[
'dependency1',
'dependency2',
'dependency3'
],
deb packages#
- Add
stdeb.cfgto project root same level ofsetup.py
project structure
python_deb_tutorial
├── python_deb_tutorial
│ ├── hello.py
│ └── __init__.py
├── README.md
├── stdeb.cfg
└── setup.py
stdeb.cfg
[DEFAULT]
maintainer = robo be <you@example.com>
Depends3: python3-pip, python3-loguru
create
python setup.py --command-packages=stdeb.command bdist_deb
check
# dpkg -I <package>.deb
dpkg -I deb_dist/python3-my-script_0.0.1-1_all.deb
#
size 29036 bytes: control archive=1160 bytes.
254 bytes, 10 lines control
907 bytes, 10 lines md5sums
585 bytes, 19 lines * postinst #!/bin/sh
201 bytes, 7 lines * postrm #!/bin/sh
413 bytes, 12 lines * prerm #!/bin/sh
Package: python3-my-script
Source: my-script
Version: 0.0.1-1
Architecture: all
Maintainer: robo be <you@example.com>
Installed-Size: 57
Depends: python3:any, python3-pip, python3-loguru
Section: python
Priority: optional
Description: very simple script
Install
# using apt to install deb with all dependencies
sudo apt install ./python3-my-script_0.0.1-1_all.deb
deb with dependencies
Use apt install to install deb with dependencies